This invention relates generally to certification of software and reutilization of existing software, and more specifically, to methods and systems for preserving certified software through virtualization.
Many systems exist today that depend on software written a long time ago. These systems are proven to work and are often certified, but they may be in need of modification to accommodate new requirements or obsolescence issues. It is often not feasible or economical to modify proven or certified software systems.
One reason is that the certification of software is expensive. In the case of flight critical software, the FAA encourages the use of RTCA's DO-178B guidelines for certification. It has been shown that software certification to the guidelines of DO-178B has a cost, per line of code, that ranges from $50 to $100. Interpolating, certification of 100,000 lines of code to the guidelines of DO-178B could range from $5 to $10 million. However, these costs are just the upfront costs, and it would be desirable to preserve some of this investment so that it would be of benefit in later iterations of the software.
The practice most often used when it comes to software certification is to write the software on a per application basis and get the whole system (software and hardware) certified. Using this approach, any subsequent change to the software (or hardware) after certification results in a recertification effort for the entire system.
In systems related to aircraft safety and operation, for example, space and time partitions have been used to partition the software into safety critical and non-safety critical regions. The partitioning guarantees that one partition cannot impact the operation of another partition. Since this guarantee is in place, software can be divided into safety critical and non-safety critical partitions. In certain applications only the safety critical partition is subject to certification. By only certifying the safety critical portion of the code, the certification cost for a particular system is reduced. To achieve such partitions, an operating system (OS) kernel is modified to provide the protections. Hardware protections for space partitions can be achieved using memory management unit hardware. All time partitions must be achieved in software. Hardware protections always provide superior protection to software protections for system resources.
Recently, the Federal Avionics Administration (FAA) has provided Advisory Circular (AC) 20-148 which describes a process that can be used to obtain FAA acceptance of a reusable software component. Also, the International Electro-technical (IEC) 61508 safety standard allows for reusable software components. AC 20-148 and IEC 61508 are likely intended for certifying pieces of an application such as operating systems (OSes) or board support packages (BSPs). Being able to reuse software reduces the overall cost of the product over its lifetime.
In many applications, software reuse is not being maximized. As described above, this lead to more software code having to be recertified for later iterations within the system. Considering maintenance of software has been estimated at up to eighty percent of the total cost of a product, any increase in the reuse of certified software should result in considerable cost savings.